<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html dir="ltr" lang="ja" xml:lang="ja" xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
		<meta content="ja" http-equiv="Content-Language" />
		<title>ファイルの削除と“完全”削除の違い</title>
		<link href="main.css" rel="stylesheet" type="text/css" />
	</head>
	<body>
		<div class="pagehead">
			<table class="pagetitle">
				<tbody>
					<tr>
						<td><img alt="" border="0" height="32" src="pics/ico-trashcan95-1.png" width="32" /></td>
						<td width="100%">ファイルの削除と“完全”削除の違い</td>
						<td align="right"><a href="index.html" style="float: right;"><img alt="" border="0" height="18" src="pics/ico-home.png" width="61" /></a></td>
					</tr>
				</tbody>
			</table>
		</div>
		<div class="pagemain">
			<p>話を分かりやすくするため、単純なFATファイルシステムでのファイル削除を例として説明します。</p>
			<h1>FATファイルシステム</h1>
			<p>MS-DOSやWindows95/98時代から存在しているFATファイルシステムは、ディスク上のどこにファイルのデータが格納されているのかを管理するFAT（ファイル 
				アロケーション テーブル）と、ファイル名などを管理するディレクトリ 
				エントリから構成されています。NTFSと違いユーザ権限管理や暗号化などは実装されていません。</p>
			<p>ディレクトリ 
				エントリとは、ディレクトリ属性の付いた特別なファイルで、下の図のような固定長リストによりファイルを管理しています。一つのファイルを管理するために、ファイル名（DOSの8.3形式）、属性（読取専用、隠し、システム、ディレクトリ、ディスクラベルなど）、変更時間、変更日付、ファイル 
				アロケーション テーブルへのポインタ、ファイル サイズ（バイト単位）などを保持しています。</p>
			<p><img alt="fig-fat-list." border="0" height="165" src="pics/fig-fat-list.png" width="577" /></p>
			<h1>ファイル削除と復活</h1>
			<p>ファイルを消去すると、ファイル名の先頭に「無効」を示す１バイト(上の図では"XX"、実際には16進数のE5)が書き込まれ、このファイルは消去されたとオペレーティング 
				システムは認識します。同時に、ファイルのデータ領域を管理しているファイル アロケーション テーブルも初期化されます。（ゼロが代入される）</p>
			<p>この「無効」を宣告された削除済みファイルデータは、ファイル名の先頭１文字だけが欠落しているだけなので、削除されたファイルであっても先頭１文字を適当に決めてやれば復活できます。<br />
				また、ファイル アロケーション テーブルの先頭は、この「無効化」されたディレクトリ 
				エントリの管理領域に残っていますので、連続したファイル領域であれば復活できます。</p>
			<h2>実際にファイルFILE1.TXTを復活する方法は…</h2>
			<p>削除済みの管理領域の"?ILE1.TXT"となっている先頭1文字を"F"と変更します。<br />
				次にファイル アロケーション テーブルの先頭へのポインタが"002"のときは、002, 003, 
				004が一つながりのファイルであったと推測して、削除済みとして書きこまれていた"000","000","000"を"003","004","FFF"に変更します。(なお、ファイルサイズがこの3つのクラスタより大きい場合は、空いているクラスタを探してリストをつなげてゆきます。)</p>
			<p><img alt="fig-fat-links." border="0" height="165" src="pics/fig-fat-links.png" width="577" /></p>
			<h1>完全削除とは</h1>
			<p>完全削除は、次の2段階で行われています。</p>
			<ul>
				<li>
					ファイル・データ（実際のファイルの内容で、表計算やワープロ文書）そのものを意味の無いデータに書き換え</li>
				<li>
					ファイル名を意味の無いものに書き換える。（ファイル サイズとファイル アロケーション テーブルへのポインタを意味の無いデータとする処理）</li>
			</ul>
			<p>これらの処理により、どんなファイルが削除されたかわかりにくくし、仮に、ファイル アロケーション 
				テーブルへのポインタを他のファイルから推測したとしても、上書きされた意味の無いデータした取り出せないということになります。</p>
		</div>
	</body>
</html>
